package service

import (
	"idle/internal/game/equip/slot"
	"idle/internal/game/mgr"
)

// 穿戴装备
func WearEquip(heroId, equipSid int) {
	hero := mgr.GetHeroMgr().GetHeroById(heroId)
	if hero == nil {
		return
	}

	bag := mgr.GetBagMgr().GetBagByHeroId(heroId)

	equip := bag.GetEquipBySid(equipSid)

	if equip == nil {
		return
	}

	slots := mgr.GetEquipMgr().GetSlotByEquipType(equip.EqType)
	var wearSlot slot.Slot
	if len(slots) == 1 {
		wearSlot = slots[0]
	} else {
		haveEmptySlot := false
		for _, s := range slots {
			oldEquip := hero.GetEquip(s)
			if oldEquip == nil {
				wearSlot = s
				haveEmptySlot = true
				break
			}
		}
		if haveEmptySlot {
			wearSlot = slots[0]
		}
	}
	oldEquip := hero.GetEquip(wearSlot)
	if oldEquip != nil {
		bag.AddEquip(oldEquip)
		mgr.GetAttrCalMgr().CalEquipAttr(hero, oldEquip, false)
	}
	hero.SetEquip(wearSlot, equip)
	mgr.GetAttrCalMgr().CalEquipAttr(hero, equip, true)
}
